#define _CRT_SECURE_NO_WARNINGS 1


//#include <utility>
//#include<vector>
//#include<iostream>
//
//using namespace std;
//
//int Min(int a, int b)
//{
//    if (a < b)
//    {
//        return a;
//    }
//    else
//    {
//        return b;
//    }
//}
//
//int main()
//{
//    int n = 0, x = 0;
//    cin >> n >> x;
//    int* arr = new int[n];
//    for (int i = 0; i < n; i++)
//    {
//        cin >> arr[i];
//    }
//    int begin = 0;
//    int MinVal = 999999;
//    vector<pair<int, int>> v;
//    int* temp = new int[n];
//    int index = 0;
//    while (begin < n)
//    {
//        int sum = arr[begin];
//        int end = begin + 1;
//        while (end < n)
//        {
//            sum += arr[end];
//            if (sum >= x)
//            {
//                v.push_back({ begin, end });
//                MinVal = Min(MinVal, end - begin + 1);
//                temp[index++] = MinVal;
//                break;
//            }
//            end++;
//        }
//        begin++;
//    }
//    for (int i = 0; i < index; i++)
//    {
//        if (temp[i] == MinVal)
//        {
//            cout << v[i].first << ' ' << v[i].second << endl;
//            break;
//        }
//    }
//    delete[] arr;
//
//    return 0;
//}

#include<algorithm>
#include <functional>
#include<iostream>

using namespace std;

bool Func(int n)
{
    return n % 2 == 0 ? true : false;
}

int main()
{
    int n = 0, k = 0;
    cin >> n >> k;
    int* arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    sort(arr, arr + n, greater<int>());
    for (int i = 0; i < n; i++)
    {
        while (Func(arr[i]) && k)
        {
            arr[i] /= 2;
            k--;
        }
    }
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += arr[i];
    }
    cout << sum << endl;
    delete[] arr;

    return 0;
}